package com.xmy.erp.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * <p>
 * 订单报名信息
 * </p>
 *
 * @author hpiggy
 * @since 2023-09-09
 */
@TableName("order_detail")
@ApiModel(value = "OrderDetail对象", description = "订单报名信息")
public class OrderDetail implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("id")
    private Long id;

    @ApiModelProperty("订单id")
    private Long orderId;

    @ApiModelProperty("校区id")
    private Long schoolId;

    @ApiModelProperty("学生id")
    private Long studentId;

    @ApiModelProperty("课程id")
    private Long courseId;

    @ApiModelProperty("课程名称")
    private String courseName;

    @ApiModelProperty("科目id")
    private Long subjectsId;

    @ApiModelProperty("班级id")
    private Long gradeId;

    @ApiModelProperty("班级名称")
    private String gradeName;

    @ApiModelProperty("价格id(对应course_pricing表)")
    private Long coursePriceId;

    @ApiModelProperty("价格详细")
    private String coursePriceName;

    @ApiModelProperty("年级")
    private Integer yearClassId;

    @ApiModelProperty("数量")
    private Integer count;

    @ApiModelProperty("共多少课时")
    private Integer allCourseCount;

    @ApiModelProperty("使用课时")
    private Integer useCourseCount;

    @ApiModelProperty("剩余课时")
    private Integer residueCourseCount;

    @ApiModelProperty("冻结课时")
    private Integer freezeCourseCount;

    @ApiModelProperty("一课次多少个课时")
    private Integer courseHouse;

    @ApiModelProperty("冻结金额（结课时选择的剩余课时清0）")
    private BigDecimal freezePrice;

    @ApiModelProperty("上课累计使用金额")
    private BigDecimal usePrice;

    @ApiModelProperty("累计转出金额")
    private BigDecimal rollOutPrice;

    @ApiModelProperty("累计转出课时")
    private Integer rollOutHouse;

    @ApiModelProperty("累计退出金额")
    private BigDecimal outPrice;

    @ApiModelProperty("累计退出课时")
    private Integer outHouse;

    @ApiModelProperty("转校累计转出课时")
    private Integer turnOutHouse;

    @ApiModelProperty("转校累计转出金额")
    private BigDecimal turnOutPrice;

    @ApiModelProperty("应收金额(原价)")
    private BigDecimal price;

    @ApiModelProperty("实收金额")
    private BigDecimal solidPrice;

    @ApiModelProperty("剩余金额")
    private BigDecimal residuePrice;

    @ApiModelProperty("优惠金额")
    private BigDecimal discountsPrice;

    @ApiModelProperty("异常收入")
    private BigDecimal abnormalPrice;

    private BigDecimal discountsPriceBack;

    @ApiModelProperty("办理优惠时间")
    private LocalDate discountsDate;

    @ApiModelProperty("服务费")
    private BigDecimal servePrice;

    @ApiModelProperty("材料费")
    private BigDecimal materialsPrice;

    @ApiModelProperty("报读类型：1新报，2续费，3扩科，0无")
    private Integer enrollType;

    @ApiModelProperty("教材费（暂时不要此字段）")
    private BigDecimal textBookPrice;

    @ApiModelProperty("有效期")
    private String validityDate;

    @ApiModelProperty("对内备注")
    private String innerRemark;

    @ApiModelProperty("对外备注")
    private String outerRemark;

    @ApiModelProperty("经办日期")
    private LocalDate handleDate;

    @ApiModelProperty("创建人id")
    private Long createdId;

    @ApiModelProperty("所报课程是哪一年的:如：2022")
    private Integer yearPart;

    @ApiModelProperty("报读季度")
    private Integer quarterNum;

    private Integer yearAndQuarter;

    @ApiModelProperty("0否，1是新生")
    private Integer isNewStudent;

    @ApiModelProperty("订单类型：1报名，2补费，3转课，4退费，5转校")
    private Integer orderType;

    @ApiModelProperty("状态：0无，1确认到账，2订单作废")
    private Integer status;

    @ApiModelProperty("1在读，2转课（转出），3退费，4停课，5结课，6结班")
    private Integer readingStatus;

    @ApiModelProperty("0无，1收款人确认到帐，2财务确认到帐")
    private Integer arriveAffirm;

    private Integer version;

    private Integer autoOutHouse;

    @ApiModelProperty("报名类型：1线下报名，2线上报名")
    private Integer signType;

    private Integer deleted;

    @ApiModelProperty("created_at")
    private LocalDateTime createdAt;

    @ApiModelProperty("updated_at")
    private LocalDateTime updatedAt;

    @ApiModelProperty("deleted_at")
    private LocalDateTime deletedAt;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    public Long getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(Long schoolId) {
        this.schoolId = schoolId;
    }
    public Long getStudentId() {
        return studentId;
    }

    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }
    public Long getCourseId() {
        return courseId;
    }

    public void setCourseId(Long courseId) {
        this.courseId = courseId;
    }
    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
    public Long getSubjectsId() {
        return subjectsId;
    }

    public void setSubjectsId(Long subjectsId) {
        this.subjectsId = subjectsId;
    }
    public Long getGradeId() {
        return gradeId;
    }

    public void setGradeId(Long gradeId) {
        this.gradeId = gradeId;
    }
    public String getGradeName() {
        return gradeName;
    }

    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }
    public Long getCoursePriceId() {
        return coursePriceId;
    }

    public void setCoursePriceId(Long coursePriceId) {
        this.coursePriceId = coursePriceId;
    }
    public String getCoursePriceName() {
        return coursePriceName;
    }

    public void setCoursePriceName(String coursePriceName) {
        this.coursePriceName = coursePriceName;
    }
    public Integer getYearClassId() {
        return yearClassId;
    }

    public void setYearClassId(Integer yearClassId) {
        this.yearClassId = yearClassId;
    }
    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }
    public Integer getAllCourseCount() {
        return allCourseCount;
    }

    public void setAllCourseCount(Integer allCourseCount) {
        this.allCourseCount = allCourseCount;
    }
    public Integer getUseCourseCount() {
        return useCourseCount;
    }

    public void setUseCourseCount(Integer useCourseCount) {
        this.useCourseCount = useCourseCount;
    }
    public Integer getResidueCourseCount() {
        return residueCourseCount;
    }

    public void setResidueCourseCount(Integer residueCourseCount) {
        this.residueCourseCount = residueCourseCount;
    }
    public Integer getFreezeCourseCount() {
        return freezeCourseCount;
    }

    public void setFreezeCourseCount(Integer freezeCourseCount) {
        this.freezeCourseCount = freezeCourseCount;
    }
    public Integer getCourseHouse() {
        return courseHouse;
    }

    public void setCourseHouse(Integer courseHouse) {
        this.courseHouse = courseHouse;
    }
    public BigDecimal getFreezePrice() {
        return freezePrice;
    }

    public void setFreezePrice(BigDecimal freezePrice) {
        this.freezePrice = freezePrice;
    }
    public BigDecimal getUsePrice() {
        return usePrice;
    }

    public void setUsePrice(BigDecimal usePrice) {
        this.usePrice = usePrice;
    }
    public BigDecimal getRollOutPrice() {
        return rollOutPrice;
    }

    public void setRollOutPrice(BigDecimal rollOutPrice) {
        this.rollOutPrice = rollOutPrice;
    }
    public Integer getRollOutHouse() {
        return rollOutHouse;
    }

    public void setRollOutHouse(Integer rollOutHouse) {
        this.rollOutHouse = rollOutHouse;
    }
    public BigDecimal getOutPrice() {
        return outPrice;
    }

    public void setOutPrice(BigDecimal outPrice) {
        this.outPrice = outPrice;
    }
    public Integer getOutHouse() {
        return outHouse;
    }

    public void setOutHouse(Integer outHouse) {
        this.outHouse = outHouse;
    }
    public Integer getTurnOutHouse() {
        return turnOutHouse;
    }

    public void setTurnOutHouse(Integer turnOutHouse) {
        this.turnOutHouse = turnOutHouse;
    }
    public BigDecimal getTurnOutPrice() {
        return turnOutPrice;
    }

    public void setTurnOutPrice(BigDecimal turnOutPrice) {
        this.turnOutPrice = turnOutPrice;
    }
    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    public BigDecimal getSolidPrice() {
        return solidPrice;
    }

    public void setSolidPrice(BigDecimal solidPrice) {
        this.solidPrice = solidPrice;
    }
    public BigDecimal getResiduePrice() {
        return residuePrice;
    }

    public void setResiduePrice(BigDecimal residuePrice) {
        this.residuePrice = residuePrice;
    }
    public BigDecimal getDiscountsPrice() {
        return discountsPrice;
    }

    public void setDiscountsPrice(BigDecimal discountsPrice) {
        this.discountsPrice = discountsPrice;
    }
    public BigDecimal getAbnormalPrice() {
        return abnormalPrice;
    }

    public void setAbnormalPrice(BigDecimal abnormalPrice) {
        this.abnormalPrice = abnormalPrice;
    }
    public BigDecimal getDiscountsPriceBack() {
        return discountsPriceBack;
    }

    public void setDiscountsPriceBack(BigDecimal discountsPriceBack) {
        this.discountsPriceBack = discountsPriceBack;
    }
    public LocalDate getDiscountsDate() {
        return discountsDate;
    }

    public void setDiscountsDate(LocalDate discountsDate) {
        this.discountsDate = discountsDate;
    }
    public BigDecimal getServePrice() {
        return servePrice;
    }

    public void setServePrice(BigDecimal servePrice) {
        this.servePrice = servePrice;
    }
    public BigDecimal getMaterialsPrice() {
        return materialsPrice;
    }

    public void setMaterialsPrice(BigDecimal materialsPrice) {
        this.materialsPrice = materialsPrice;
    }
    public Integer getEnrollType() {
        return enrollType;
    }

    public void setEnrollType(Integer enrollType) {
        this.enrollType = enrollType;
    }
    public BigDecimal getTextBookPrice() {
        return textBookPrice;
    }

    public void setTextBookPrice(BigDecimal textBookPrice) {
        this.textBookPrice = textBookPrice;
    }
    public String getValidityDate() {
        return validityDate;
    }

    public void setValidityDate(String validityDate) {
        this.validityDate = validityDate;
    }
    public String getInnerRemark() {
        return innerRemark;
    }

    public void setInnerRemark(String innerRemark) {
        this.innerRemark = innerRemark;
    }
    public String getOuterRemark() {
        return outerRemark;
    }

    public void setOuterRemark(String outerRemark) {
        this.outerRemark = outerRemark;
    }
    public LocalDate getHandleDate() {
        return handleDate;
    }

    public void setHandleDate(LocalDate handleDate) {
        this.handleDate = handleDate;
    }
    public Long getCreatedId() {
        return createdId;
    }

    public void setCreatedId(Long createdId) {
        this.createdId = createdId;
    }
    public Integer getYearPart() {
        return yearPart;
    }

    public void setYearPart(Integer yearPart) {
        this.yearPart = yearPart;
    }
    public Integer getQuarterNum() {
        return quarterNum;
    }

    public void setQuarterNum(Integer quarterNum) {
        this.quarterNum = quarterNum;
    }
    public Integer getYearAndQuarter() {
        return yearAndQuarter;
    }

    public void setYearAndQuarter(Integer yearAndQuarter) {
        this.yearAndQuarter = yearAndQuarter;
    }
    public Integer getIsNewStudent() {
        return isNewStudent;
    }

    public void setIsNewStudent(Integer isNewStudent) {
        this.isNewStudent = isNewStudent;
    }
    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }
    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getReadingStatus() {
        return readingStatus;
    }

    public void setReadingStatus(Integer readingStatus) {
        this.readingStatus = readingStatus;
    }
    public Integer getArriveAffirm() {
        return arriveAffirm;
    }

    public void setArriveAffirm(Integer arriveAffirm) {
        this.arriveAffirm = arriveAffirm;
    }
    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }
    public Integer getAutoOutHouse() {
        return autoOutHouse;
    }

    public void setAutoOutHouse(Integer autoOutHouse) {
        this.autoOutHouse = autoOutHouse;
    }
    public Integer getSignType() {
        return signType;
    }

    public void setSignType(Integer signType) {
        this.signType = signType;
    }
    public Integer getDeleted() {
        return deleted;
    }

    public void setDeleted(Integer deleted) {
        this.deleted = deleted;
    }
    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }
    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }
    public LocalDateTime getDeletedAt() {
        return deletedAt;
    }

    public void setDeletedAt(LocalDateTime deletedAt) {
        this.deletedAt = deletedAt;
    }

    @Override
    public String toString() {
        return "OrderDetail{" +
            "id=" + id +
            ", orderId=" + orderId +
            ", schoolId=" + schoolId +
            ", studentId=" + studentId +
            ", courseId=" + courseId +
            ", courseName=" + courseName +
            ", subjectsId=" + subjectsId +
            ", gradeId=" + gradeId +
            ", gradeName=" + gradeName +
            ", coursePriceId=" + coursePriceId +
            ", coursePriceName=" + coursePriceName +
            ", yearClassId=" + yearClassId +
            ", count=" + count +
            ", allCourseCount=" + allCourseCount +
            ", useCourseCount=" + useCourseCount +
            ", residueCourseCount=" + residueCourseCount +
            ", freezeCourseCount=" + freezeCourseCount +
            ", courseHouse=" + courseHouse +
            ", freezePrice=" + freezePrice +
            ", usePrice=" + usePrice +
            ", rollOutPrice=" + rollOutPrice +
            ", rollOutHouse=" + rollOutHouse +
            ", outPrice=" + outPrice +
            ", outHouse=" + outHouse +
            ", turnOutHouse=" + turnOutHouse +
            ", turnOutPrice=" + turnOutPrice +
            ", price=" + price +
            ", solidPrice=" + solidPrice +
            ", residuePrice=" + residuePrice +
            ", discountsPrice=" + discountsPrice +
            ", abnormalPrice=" + abnormalPrice +
            ", discountsPriceBack=" + discountsPriceBack +
            ", discountsDate=" + discountsDate +
            ", servePrice=" + servePrice +
            ", materialsPrice=" + materialsPrice +
            ", enrollType=" + enrollType +
            ", textBookPrice=" + textBookPrice +
            ", validityDate=" + validityDate +
            ", innerRemark=" + innerRemark +
            ", outerRemark=" + outerRemark +
            ", handleDate=" + handleDate +
            ", createdId=" + createdId +
            ", yearPart=" + yearPart +
            ", quarterNum=" + quarterNum +
            ", yearAndQuarter=" + yearAndQuarter +
            ", isNewStudent=" + isNewStudent +
            ", orderType=" + orderType +
            ", status=" + status +
            ", readingStatus=" + readingStatus +
            ", arriveAffirm=" + arriveAffirm +
            ", version=" + version +
            ", autoOutHouse=" + autoOutHouse +
            ", signType=" + signType +
            ", deleted=" + deleted +
            ", createdAt=" + createdAt +
            ", updatedAt=" + updatedAt +
            ", deletedAt=" + deletedAt +
        "}";
    }
}
